---
title: "JavaScript → Go"
description: "从 JavaScript 开发者视角学习 Go 编程语言，重点掌握并发编程、系统编程和云原生开发"
---
## 为什么学习 Go？

Go (Golang) 是一门专为简洁性、高效性和并发性设计的现代编程语言。作为 JavaScript 开发者，学习 Go 将扩展你在以下领域的能力：

- **并发编程**：掌握 Goroutines 和 Channels 编写高效的并发代码
- **系统编程**：构建高性能的系统级应用程序
- **微服务**：创建可扩展的微服务架构
- **云原生开发**：在现代云环境中部署应用程序
- **性能优化**：在垃圾回收的基础上实现接近 C 语言的性能

## 你将学到什么

### 核心概念
- Go 语法和类型系统与 JavaScript 的对比
- 包管理和模块系统
- 接口和类型断言
- 错误处理模式

### 并发与性能
- Goroutines vs JavaScript async/await
- Channel 通信模式
- Select 语句的非阻塞操作
- 性能优化技术

### Web 开发
- HTTP 服务器开发
- RESTful API 设计
- GraphQL 服务
- WebSocket 实现

### 现代 Go 特性
- 泛型（Go 1.18+）
- 多模块项目的工作区
- 模糊测试
- 性能分析

## 学习路径

学习路径分为 **14 个渐进式模块**：

1. **Go 语言介绍**：理解 Go 的设计哲学并与 JavaScript 进行对比
2. **语法对比**：将 JavaScript 概念映射到 Go 语法和模式
3. **包管理系统**：理解 Go 模块和包管理
4. **类型与接口**：掌握 Go 的类型系统和接口模式
5. **并发与 Goroutines**：学习使用 Goroutines 进行并发编程
6. **Channels 与 Select**：掌握 Channel 通信和 Select 语句
7. **错误处理**：理解 Go 的错误处理哲学
8. **Web 开发**：使用 Go 构建 Web 服务和 API
9. **微服务**：开发微服务架构
10. **云原生开发**：在云环境中部署应用程序
11. **测试与调试**：编写测试和调试 Go 应用程序
12. **实战项目**：应用所学知识的真实项目
13. **常见陷阱**：避免 Go 开发中的常见错误
14. **Go 惯用法**：编写惯用且高性能的 Go 代码

## 快速开始

让我们从 JavaScript 和 Go 的简单对比开始：

<UniversalEditor title="Hello World 对比" compare={true}>
```javascript !! js
// JavaScript
function greet(name) {
    return `Hello, ${name}!`;
}

console.log(greet("World"));
```

```go !! go
// Go
package main

import "fmt"

func greet(name string) string {
    return fmt.Sprintf("Hello, %s!", name)
}

func main() {
    fmt.Println(greet("World"))
}
```
</UniversalEditor>

## 主要差异

| 方面 | JavaScript | Go |
|------|------------|----|
| **类型系统** | 动态类型 | 静态类型 |
| **并发模型** | 事件循环，async/await | Goroutines，channels |
| **内存管理** | 垃圾回收 | 垃圾回收 |
| **编译方式** | JIT 编译 | 提前编译 |
| **运行时** | V8 引擎 | Go 运行时 |
| **包管理** | npm/yarn | go mod |

## 准备开始？

通过我们全面的学习路径开始从 JavaScript 到 Go 的旅程。每个模块都包含交互式代码示例、性能对比和真实项目。

[开始学习 →](./js2go/module-00-go-introduction) 